namespace designpatternsplus.contracts
{
    using System;
    using System.ServiceModel;

    /// <summary>
    /// 
    /// </summary>
    [ServiceContract]
    public interface ISalesReceipt : IShoppingCart {
        /// <summary>
        /// Gets the <see cref="IProductService"/> with the specified sku.
        /// </summary>
        /// <value></value>
        IProductService this[String sku] { get; }

        /// <summary>
        /// Gets or sets the total sale.
        /// </summary>
        /// <value>The total sale.</value>
        double TotalSale { get; }

        /// <summary>
        /// Gets the transaction date time.
        /// We setthis in the ctor
        /// </summary>
        /// <value>The transaction date time.</value>
        DateTime TransactionDateTime { get; }

        /// <summary>
        /// Gets or sets the total tax for the receipt
        /// </summary>
        /// <value>The total tax.</value>
        double TotalTax { get; }

        /// <summary>
        /// Gets or sets the transaction id
        /// for the receipt which is unique for all
        /// </summary>
        /// <value>The transaction id.</value>
        string TransactionId { get; }

        /// <summary>
        /// Gets or sets the cart id.
        /// </summary>
        /// <value>The cart id.</value>
        Guid CartId { get; }



    }
}